1.final修饰符
  a.修饰类
        final修饰的类不能被继承,如果以后定义一个类不想被别人继承可以加final修饰
  b.修饰变量
   /*     按定义位置划分: 局部变量,成员变量
        *  按类型来分:基本类型,引用类型
        *  局部变量:
        *     一旦这个变量被final修饰,只能被赋值一次
        *  成员变量:
        *    一旦这个变量被final修饰,只能被赋值一次
        *  引用变量:
        *    一旦这个变量被final修饰,这个引用变量中的地址值不允许被更改*/
  c.修饰方法
        final修饰的方法只能够让子类使用,不能够让子类重写
2.static修饰符
  a.修饰变量
    /*    * 局部变量:
        *   static不能修饰局部变量
        * 成员变量:
        *  static可以修饰成员变量
        *  使用:
        *    可以被对象调用
        *    可以被 类名.静态成员变量 使用*/
  b.修饰方法
        静态修饰的方法可以通过对象来调用,也可以通过类名.静态方法(参数)来调用(推荐第二种方式)

  c.静态成员加载时机
    静态成员(成员变量和成员方法)随着类的加载而加载,存储在方法区中,随着类的销毁而销毁 (静态成员和类同生共死)
    非静态成员变量随着对象的加载而加载,存储在堆内存中,随着对象的销毁而销毁(非静态成员变量和对象同生共死)
  d.静态成员变量的特点
    非静态成员变量,随着对象的创建而产生,创建几个对象,就有几份非静态成员变量
    静态成员变量被所有对象共享
  e.静态使用细节
   /*     * static访问细节
        * 1.静态方法中没有this和super关键字
        *    由于静态成员方法随着类的加载而加载,当我们通过类名.静态方法
        *    来使用的时候,此时可能没有任何对象,那么我们的this无法指向某个对象
        * 2.静态成员可以直接访问静态成员,不能直接访问非静态成员
        *    静态成员变量随着类的加载而加载
        *    非静态成员变量随着对象的加载而加载
        *    类的加载优先于对象的加载
        *
        *    静态成员1:古人(李白)
        *    静态成员2:古人(王维)
        *    非静态成员:21世纪人
        * 3.非静态成员既可以访问静态成员,也可以访问非静态成员*/
   f.静态常量
     我们一般在一个类中统一定义我们整个工程用的常量
     class Constant{
         /**
          * public: 权限足够大,其他类都可以访问
          * static:为了使用方便,直接通过类名.静态成员来使用
          * final: 锁死PI得值
          */
        public static final 常量名=值;
     }
3.包
 a.为什么要有包?
  包本质上就是一个个文件夹,为了分类管理我们的工程中文件
  我们一般把实现同一个功能相关的代码放在一个包下
 b.包如何定义?
   1.包命名规范
      我们一般采用域名反写作为包的名称,保证包名的唯一
      https://www.baidu.com    //com.baidu.xx xx一般命名成跟功能相关的名称  com.baidu.cloud
      https://www.qq.com      //com.qq.xx
      com.package01 //.代表分隔开两个文件夹 文件夹的结构是  com文件夹 / package01文件夹
         com
           package01
   2.包的定义格式
        package com.package01;//代表这个java源文件存放在com文件夹 /package01文件夹
                             //将来编译后生成的类也会放在 com文件夹 /package01文件夹
        package的声明必须放在代码的第一行
   3.包的使用
     a.我们如果使用同一个包下的类可以直接用
     b.如果使用不同包下的类,需要先用import 包名.类名 导入,在代码中就可以直接使用这个类

4.权限修饰符
/**
 * 权限修饰符
 *                          public   默认   protected   private
 *  同一个类中               √          √     √           √
 *  同一个包下的不同类        √          √     √           ×
 *  不同包下的两个类         √           ×    ×           ×
 *  不同包下的子父类         √          ×       √        ×
 *
 *  private:private修饰的成员只能在本类中使用,不能在类外使用
 *  public:权限最大,它适合跨包访问
 *  protected:如果父类的成员加了protected修饰,那么只有他的子类可以使用
 */
5.匿名对象
    /**
     * 匿名对象(无名对象)
     * 格式: new 类名(参数);//无名代表的没有引用变量名
     * 使用场景:匿名对象主要用在方法传参,并且只使用一次
     */
6.代码块
  a.局部代码块
        /**
         * 局部代码块:定义在方法中
         *  限制变量的使用的范围
         */
  b.构造代码块
        /**
         * 构造代码块:定义在类中
         * 构造代码块随着对象的创建被执行,而且构造代码块优先于构造函数执行
         * 一般在构造代码块中去做所有对象都要执行的初始化动作
         */
  ***c.静态代码块
    /**
     * 静态代码块:定义在类中
     * ***静态代码块随着类的加载而执行
     * 我们一般在静态代码块中初始化静态成员
     */
    d.构造代码块和静态代码块以及构造函数执行顺序
    /**
     * 构造函数,静态代码块,构造代码块执行顺序
     * 静态代码块先执行,其次是构造代码块,最后是构造函数
     * 静态代码块随着类的加载而执行,只执行一次
     */